package com.rc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@SpringBootApplication
@EnableDiscoveryClient
@RestController
@RefreshScope
@EnableScheduling
public class MicroServiceApp {



  /*  @EnableDiscoveryClient注解是将服务标记为客户端,可被发现注册并注册到consul上。
    @EnableScheduling 开启定时调度功能，也就是隔一段时间回去扫描配置中心，如果配置有发生，有通知并刷新有标记@RefreshScope的类或方法所引用的配置。是不是很高大上。
    可能有人会对@RefreshScope配置不解，它的作用是支持不停机动态刷新配置，也就是当注册中心的配置更改后，项目会感知到配置的变化，从而刷新有标记此注解的类或方法对配置的引用。
当然，前提是你还得开启定时调度注解
   */

    @Value("${spring.application.name}")
    private String serviceName;


    @Value("${jdbc.username}")
    private String userName;



    @Value("${server.port}")
    private int servicePort;

    @RequestMapping("/say")
    public String say(){
        return "hello world! I'm '" + serviceName + ":" + servicePort + "'"+userName;
    }







    @RequestMapping("v1/list")
    public Object getList(){
        List list = new ArrayList();
        list.add("1:3313");
        list.add("2:31231");
        return list;
    }


    public static void main(String[] args)throws Exception{

        SpringApplication.run(MicroServiceApp.class, args);
    }

}
